PythonでWebAPIを作ろう! Fast APIでスピード開発体験を!
はじめに
こんにちは、稲葉です。
前にテック系の記事を読んでいたら、FastAPIと言うものを見つけました。
気になり調べてみたら、名前の通り API を構築するための Python の Web フレームワークだと分かり。
Python の Web フレームワークなら少し触ってみたいと思い。 さっそく、FastAPI で簡単な WebAPIを作ってみました。
という事で,今回はFastAPI を使っての API の構築の仕方を紹介したいと思います。
インストール
はじめにFastAPIをインストールします。
pip install fastapi
また、サーバーとして動作するのに必要なuvicornをインストールします。
pip install uvicorn
これでAPI 構築に必要な物のインストールは完了です。
構築
今回は簡単な税込み価格を出すだけの APIを作ります。
では早速、コードを書いていきたいと思います。
まず、名前はなんでも良いのですが、ここではfast_api という名前のフォルダーとその中にmain.pyを作成。
from fastapi import FastAPI from pydantic import BaseModel class TaxIn(BaseModel): cost: int tax_rate: float app = FastAPI() @app.get("/") def index(): return {"message": "Hello World"} @app.post("/") def calc(data: TaxIn): in_tax_cost = data.cost * (1 + data.tax_rate) return {'税込み価格': in_tax_cost}
インポートした BaseModelと言うのは、型推論に使います。 これをすることでcost には int 型しか代入できず、tax_rate には float 型しか代入できなくなります。
そして、API が呼ばれた時の引数 data に TaxIn の型を当てる。
これでAPI 側のコードは完了です。
なので、一旦動かしてみたいと思います。
ターミナルを開き、以下のコマンドを打ち込みます。
uvicorn fast_api.main:app --reload
そうすると以下の画像のように、ターミナルに出力されます。
このURL をクリックしますと、このような画面になります。
作成した API の詳細を見るには、上記のURL の後ろに/docsと追加する。
そうすると、このような画面になり詳細が分かります。
次に API を呼び出すために、src下に test.py(名前はなんでも良いです)を作成。
import requests import json def main(): url = 'http://127.0.0.1:8000/' # 先ほどターミナルに出力されたURL data = { 'cost': 100, 'tax_rate': 0.1 } # ここでAPIを呼び出す,データはjson形式ではないとエラーが起きる res = requests.post(url, json.dumps(data)) print(res.json()) if __name__ == '__main__': main()
これで呼び出し側のコードも完成です。
先ほどのターミナルを開いたまま、別のターミナルを開き python test.pyと打ちます。
こちらが実際のターミナルの出力例です。
まとめ
今回はFastAPI を使った WebAPI の構築の仕方を紹介しました。
税込み価格を出すだけの簡単な API だったこともあり、 あっという間(Fast)に作成できました。(想像以上の速さでした)
FastAPI は公式ドキュメントが詳細に分かりやすく書かれているため、 これを機に興味を持って頂いた方はぜひ覗いて見てみて下さい。
最後まで読んでくださりありがとうございます。